package com.olah.user.controller;

import com.olah.common.entity.dto.UtilResponse;
import com.olah.common.entity.dto.request.user.*;
import com.olah.common.entity.po.user.CertificationInfo;
import com.olah.user.service.InfoUpdateService;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * Update Information Controller
 */
@RefreshScope
@RestController
@RequestMapping("/user/update")
public class InfoUpdateController {

    @Resource
    private InfoUpdateService service;

    /**
     * 更新用户的基本信息
     * @param info
     */
    @PostMapping(value = "/base")
    public UtilResponse<Boolean> updateBase(@RequestBody UpdateProfileBaseInfo info) {
        return service.updateBase(info)
            ? UtilResponse.success("更新成功", true)
            : UtilResponse.error("保存失败, 请稍后再试");
    }

    /**
     * 更新用户的绑定信息
     * @param info
     */
    @PostMapping(value = "/bind")
    public UtilResponse<Boolean> updateBind(@RequestBody UpdateProfileBindInfo info) {
        return service.updateBind(info)
            ? UtilResponse.success("更新成功", true)
            : UtilResponse.error("保存失败, 请稍后再试");
    }

    /**
     * 更新用户的密码
     * @param info
     */
    @PostMapping(value = "/password")
    public UtilResponse<Boolean> updatePassword(@RequestBody UpdatePasswdInfo info) {
        return service.updatePassword(info)
            ? UtilResponse.success("更新成功", true)
            : UtilResponse.error("保存失败, 请稍后再试");
    }

    /**
     * 更新用户的消息通知设置
     * @param info
     */
    @PostMapping(value = "/notify")
    public UtilResponse<Boolean> updateNotify(@RequestBody UpdateNotifyInfo info) {
        return service.updateNotify(info)
            ? UtilResponse.success("更新成功", true)
            : UtilResponse.error("保存失败, 请稍后再试");
    }

    /**
     * 更新用户的强项信息
     * @param info
     */
    @PostMapping(value = "/goodness")
    public UtilResponse<Boolean> updateGoodness(@RequestBody UpdateGoodnessInfo info) {

        return UtilResponse.success("更新成功", service.updateGoodness(info));
    }

    /**
     * 学生认证
     * @param certificationInfo
     */
    @PostMapping("certification")
    public UtilResponse<Boolean> certification(@RequestBody CertificationInfo certificationInfo) {
        return service.certification(certificationInfo)
            ? UtilResponse.success("更新成功", true)
            : UtilResponse.error("保存失败, 请稍后再试");
    }

}
